1. Field of the Invention
The present invention generally relates to virtualization hypervisors, and more specifically to proprietary virtualization hypervisors.
2. Description of the Related Art
Virtual storage devices for proprietary hypervisors are typically implemented as files stored within a proprietary file system. These files present a logical address space corresponding to the virtual storage device as offsets or locations within the files that represent the virtual storage device. The proprietary file system within the proprietary hypervisor is responsible for mapping these offsets or locations within the files representing the virtual storage devices to a physical storage location on one of the devices that the proprietary hypervisor is using.
The producers of proprietary hypervisors often are reluctant to allow other companies to modify or add functionality within their core intellectual property and do not provide published/supported mechanisms to do so. These proprietary hypervisors are closed and inaccessible to third party software publishers and physical device manufacturers.
It is desirable for independent software and hardware companies to add unique value to the I/O streams of these closed/proprietary virtualization hypervisors on the basis of individual virtual storage devices.
It is furthermore desirable to provide this additional functionality in a manner that is minimally intrusive such that it introduces minimal chance for destabilization of the proprietary virtualization hypervisor, introduces minimal change to the closed/proprietary virtualization hypervisor, and does not rely upon unpublished, proprietary, or likely to change mechanisms.
There are no known approaches that attempt to solve this problem. In the case of an open source virtualization hypervisor, there are file system primitives available to provide the necessary mapping/translation functions.
Reverse engineering and/or patching of the proprietary virtualization hypervisor may be attempted to provide the necessary translation/mapping functionality. This approach is highly undesirable for technical (and in some cases legal) reasons. This approach is very prone to fail with new releases/version/patches/updates to the proprietary virtualization hypervisor.
General definitions for terms utilized in the pertinent art are set forth below.
Application Programming Interface (API) is a collection of computer software code, usually a set of class definitions, that can perform a set of related complex tasks, but has a limited set of controls that may be manipulated by other software-code entities. The set of controls is deliberately limited for the sake of clarity and ease of use, so that programmers do not have to work with the detail contained within the given API itself.
“Cache” refers to the memory in which data is stored in order to make the data more readily and speedily accessible, transparently. When a cache is exhausted, it is flushed of data, to be replaced with the next cache according to a replacement algorithm.
“Cached data” is data in cache memory duplicating original values stored elsewhere (such as the hard disk) on a computer.
“Cache hit” refers to when the processor looks for data in cache memory and finds the data. A cache hit places less strain on input/output (I/O) resources and limited network resources.
“Cache miss” refers to when the processor looks for data in cache memory and finds that it is not there, resulting in having to read from the main memory or hard disk. Data retrieved during a cache miss is often written into the cache in anticipation of further need for it.
“Caching resources” refers to the physical or virtual components of limited availability required for caches or the process of caching, such as memory or a processing unit.
“Cloud computing” is generally defined as using computing resources, primarily servers, owned by a third party provider (such as the AMAZON ELASTIC COMPUTE CLOUD, JOYENT, and GOOGLE APPS) such that the user does not need to make a substantial investment in computer hardware and scale resources depending on the user's needs. Cloud computing primarily involves Web applications but can include storage, raw computing and other specialized services.
Compatibility library is a software program that provides an interface between computer programs, and in particular an interface that provides an interface between a proprietary environment and an open source or GNU GPL device driver that provides the supporting functionality for the device driver.
“Data center” is a centralized location where computing resources (such as, host computers, servers, applications, databases, or network access) critical to an organization are maintained in a highly controlled physical environment.
Device driver is a software program that allows a hardware device to interact with software installed on the hardware device.
“Execution environments” refers to operating systems or virtual machines in which executable programs are executed. When a computer program is executed, or running, a process is created.
Function pointer is a programming language data type that invokes a function in a computer memory.
Functionality is a subroutine of a computer program which performs a specific function, usually as a sequence of program instructions.
GNU, General Public License is a license for an open source operating system based on UNIX, which requires that derived works be distributed under the same license terms.
Hypervisor is a hardware virtualization technique that allows a computer to host multiple operating systems by providing a guest operating system with a virtual operating platform.
I/O (input/output) is the communication between a processing system and the outside.
Kernel is a component of an operating system that connects a computer's software applications to the computer's hardware.
“Load balancing” refers to distributing workload across multiple computers, central processing units, or other resources, to achieve optimal resource utilization, maximize throughput, minimize response time, and avoid overload.
“Logical unit number” or “LUN” is an identification number given to logical units (devices) connected to a SCSI “Small Computer System Interface” adapter; typically, the logical disks in a storage area network (SAN).
“Mass storage devices” refers to removable or non-removable media that can store large amounts of data, such as tape drives, redundant array of independent disks (RAID), magnetic disks, or flash drives.
“Non-volatile caching device” refers to a storage device that can retain data within memory even when the device is not powered on, such as a flash drive.
“Open source software” or “OSS” refers to computer software that is available with open access to the source code (design and implementation), which is typically free.
“Process identifier”, “process ID”, or “PID” is a number used by operating systems (OS) to uniquely identify a process, an OS object that consists of an executable program, a set of virtual memory addresses, and one or more threads. When a program runs, a process is created.
“Virtualization” refers to a computer software/hardware platform that allows running several operating systems simultaneously on the same computer. VMware vSphere Hypervisor™ (ESXi) is an example of a hardware virtualization product.
“Virtualized environment” refers to hypervisor, or virtualization, systems.
Virtual Machine is a software abstraction of a physical computer.
“Web-Browser” is a complex software program, resident in a client computer, that is capable of loading and displaying text and images and exhibiting behaviors as encoded in HTML (HyperText Markup Language) from the Internet, and also from the client computer's memory. Major browsers include MICROSOFT INTERNET EXPLORER, NETSCAPE, APPLE SAFARI, MOZILLA FIREFOX, and OPERA.
“Web-Server” is a computer able to simultaneously manage many Internet information-exchange processes at the same time. Normally, server computers are more powerful than client computers, and are administratively and/or geographically centralized. An interactive-form information-collection process generally is controlled from a server computer.
Proprietary virtualization hypervisors may not provide mechanisms to translate or map virtual storage device addresses to physical device addresses to third party software publishers or physical device manufacturers. It is highly desirable to be able to map the virtual storage device address to the physical location where data is stored to provide management policies or value added features/functionality to data associated with an individual virtual storage device.